package pe.gob.mef.snip.preinversion.controller;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import pe.gob.mef.snip.preinversion.domain.Estudio;
import pe.gob.mef.snip.preinversion.domain.ProyectoBanco;
import pe.gob.mef.snip.preinversion.service.EstudioService;
import pe.gob.mef.snip.preinversion.service.ProyectoBancoService;
import pe.gob.mef.snip.preinversion.util.Parametros;
import pe.gob.mef.snip.preinversion.util.ServiceException;
import pe.gob.mef.snip.preinversion.util.Util;


@Controller
public class EstudioController {

	protected final Log log = LogFactory.getLog(getClass());
	
	@Autowired
	private EstudioService estudioService;
	@Autowired
	private ProyectoBancoService proyectoBancoService;
	
	private Estudio estudio;
	private ProyectoBanco proyectoBanco;
	
	@RequestMapping("/estudioSnip03Listar")
	public ModelAndView estudioSnip03Listar(HttpServletRequest request, HttpServletResponse response) {
		
		if (log.isDebugEnabled()) log.debug("estudioSnip03Listar(HttpServletRequest,HttpServletResponse");
	    HttpSession session = request.getSession();	
		Map<String, Object> estudioSnip03Map = new HashMap<String, Object>();
	    String viewName = "";    	
		try{		
				estudioSnip03Map.put("idProyecto", request.getParameter("idProyecto"));
				estudioSnip03Map.put("version", Parametros.VERSION_FICHA_1);
				viewName = "frmEstudios";		
					
		} catch (ServiceException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return new ModelAndView(viewName,"estudioSnip03Map",estudioSnip03Map);
	}
	
	
	@RequestMapping("/estudioSnip03Grabar")   
	public ModelAndView estudioSnip03Grabar(HttpServletRequest request, HttpServletResponse response) {
		
		if (log.isDebugEnabled()) log.debug("estudioSnip03Grabar(HttpServletRequest,HttpServletResponse");
	    HttpSession session = request.getSession();	
		Map<String, Object> estudioSnip03Map = new HashMap<String, Object>();
	
		proyectoBanco = new ProyectoBanco();
	    
		String viewName = "";
	       
		try{	
			
				estudioSnip03Map.put("idProyecto", (String) request.getParameter("idProyecto"));
				estudioSnip03Map.put("version", (String) request.getParameter("version")); 
				
				proyectoBanco.setProyecto(new BigDecimal((String)request.getParameter("idProyecto")));
				proyectoBanco.setVersion(new BigDecimal((String)request.getParameter("version")));
							
				for(int i = 1; i <= 3; i++ ){
					estudio = new Estudio();
					String[] estudios = request.getParameterValues("txt_nivel_" + String.valueOf(i));					
					estudio.setProyecto(new BigDecimal((String)request.getParameter("idProyecto")));
					estudio.setVersion(new BigDecimal((String)request.getParameter("version")));
					estudio.setNivelEst(String.valueOf(i));
					estudio.setFechaEst(Util.getDateFromString(estudios[0]));
					estudio.setAutorEst(estudios[1]);
					estudio.setCostoEst(new BigDecimal(estudios[2]));
					System.out.println(estudio.toString());
					
					estudioService.obtener(estudio);
					String resultado = estudio.getResultado();
					System.out.println(resultado);
					if(resultado.equalsIgnoreCase("0")){
						estudioService.insertar(estudio);
						System.out.println("Insertar:" + estudio.getResultado());
					}
					else
						{estudioService.actualizar(estudio);
						System.out.println("actualizar:" + estudio.getResultado());}
				}

				proyectoBanco.setProyecto(new BigDecimal((String)request.getParameter("idProyecto")));
				proyectoBanco.setVersion(new BigDecimal((String)request.getParameter("version")));
				proyectoBanco.setNivelRecom(request.getParameter("sel_nivelRecomendacion"));
				
				proyectoBancoService.actualizar(proyectoBanco);
				
				System.out.println("Resultado" + proyectoBanco.getResultado());
				
				viewName = "frmEstudios";			
		
		
		} catch (ServiceException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new ModelAndView(viewName,"estudioSnip03Map",estudioSnip03Map);
	}
	
	
	
}

